//创建一个路由器暴露出去

//引入路由器
import {createRouter,createWebHistory, type RouteRecordRaw} from 'vue-router';
//引入路由模块
import Home from '@/views/Home.vue';
//引入其他路由设置ts文件
// import companyRouter from '@/router/company/companyRouter';
// import oaRouter from './oa/oaRouter';
// import shopRouter from './shop/shopRouter';
import manageRouter from './manage/manageRouter';

const routerArr:Array<RouteRecordRaw> = [
    // 先将其他类型的网页类型隐藏
    // ...shopRouter,
    // ...oaRouter,
    // ...companyRouter,
    ...manageRouter,
    {
        name:"home",
        path:"/home",
        component:Home
    }
];

//创建路由器
const router = createRouter({
    // 路由模式有2中
    // 1、createWebHistory：Memory模式
    // 如果路径不存在，也就无法找到页面，所以需要后端处理，如果域名正确且页面路径不存在，就重定向一个面，一般是首页
    ///2、createWebHashHistory：hash模式，URL之前使用了一个哈希字符（#）。
    // 由于这部分 URL 从未被发送到服务器，所以它不需要在服务器层面上进行任何特殊处理。(当是它在 SEO 中确实有不好的影响,可忽略)
    history:createWebHistory(),
    routes: routerArr
})

router.beforeEach((to, from, next)=>{
    if(to.fullPath == "/" || to.fullPath == "") {
        next('manage');
        return;
    }
    const requiresAuth = to.matched.some(record => record.meta.requiresAuth)
    //判断是否需要校验登录
    if (requiresAuth) {
        //登录状态直接跳过，否则跳转到登录页面
        if(!isUserLogin()) {
            next('manage/login');
            return;
        }
        
        next();
        return;
    }
    //已经登录,登录页面就不能进入
    if(to.fullPath == "/manage/login" && isUserLogin()) {
        next('manage');
        return;
    }
    next();
    return;
})

//判断是否登录
function isUserLogin() {
    return !!localStorage.getItem('token');
}

export default router;
